﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace UFIDA.U9.Cust.YYD.WebApi.Dtos
{
    public class DescFlexFieldRData
    {

        public string PrivateDescSeg1 { get; set; }


        public string PrivateDescSeg2 { get; set; }


        public string PrivateDescSeg3 { get; set; }


        public string PrivateDescSeg4 { get; set; }


        public string PrivateDescSeg5 { get; set; }


        public string PrivateDescSeg6 { get; set; }


        public string PrivateDescSeg7 { get; set; }


        public string PrivateDescSeg8 { get; set; }

        public string PrivateDescSeg9 { get; set; }


        public string PrivateDescSeg10 { get; set; }


        public string PrivateDescSeg11 { get; set; }

        public string PrivateDescSeg12 { get; set; }

        public string PrivateDescSeg13 { get; set; }

        public string PrivateDescSeg14 { get; set; }


        public string PrivateDescSeg15 { get; set; }


        public string PrivateDescSeg16 { get; set; }


        public string PrivateDescSeg17 { get; set; }


        public string PrivateDescSeg18 { get; set; }


        public string PrivateDescSeg19 { get; set; }


        public string PrivateDescSeg20 { get; set; }


        public string PrivateDescSeg21 { get; set; }


        public string PrivateDescSeg22 { get; set; }


        public string PrivateDescSeg23 { get; set; }


        public string PrivateDescSeg24 { get; set; }


        public string PrivateDescSeg25 { get; set; }

        public string PrivateDescSeg26 { get; set; }


        public string PrivateDescSeg27 { get; set; }


        public string PrivateDescSeg28 { get; set; }


        public string PrivateDescSeg29 { get; set; }


        public string PrivateDescSeg30 { get; set; }


        public string PubDescSeg1 { get; set; }


        public string PubDescSeg2 { get; set; }


        public string PubDescSeg3 { get; set; }


        public string PubDescSeg4 { get; set; }


        public string PubDescSeg5 { get; set; }

        public string PubDescSeg6 { get; set; }


        public string PubDescSeg7 { get; set; }


        public string PubDescSeg8 { get; set; }

        public string PubDescSeg9 { get; set; }


        public string PubDescSeg10 { get; set; }


        public string PubDescSeg11 { get; set; }

        public string PubDescSeg12 { get; set; }


        public string PubDescSeg13 { get; set; }


        public string PubDescSeg14 { get; set; }


        public string PubDescSeg15 { get; set; }

        public string PubDescSeg16 { get; set; }


        public string PubDescSeg17 { get; set; }


        public string PubDescSeg18 { get; set; }


        public string PubDescSeg19 { get; set; }


        public string PubDescSeg20 { get; set; }


        public string PubDescSeg21 { get; set; }


        public string PubDescSeg22 { get; set; }


        public string PubDescSeg23 { get; set; }


        public string PubDescSeg24 { get; set; }


        public string PubDescSeg25 { get; set; }


        public string PubDescSeg26 { get; set; }


        public string PubDescSeg27 { get; set; }


        public string PubDescSeg28 { get; set; }

        public string PubDescSeg29 { get; set; }


        public string PubDescSeg30 { get; set; }


        public string PubDescSeg31 { get; set; }

        public string PubDescSeg32 { get; set; }


        public string PubDescSeg33 { get; set; }


        public string PubDescSeg34 { get; set; }


        public string PubDescSeg35 { get; set; }


        public string PubDescSeg36 { get; set; }


        public string PubDescSeg37 { get; set; }


        public string PubDescSeg38 { get; set; }


        public string PubDescSeg39 { get; set; }


        public string PubDescSeg40 { get; set; }


        public string PubDescSeg41 { get; set; }


        public string PubDescSeg42 { get; set; }


        public string PubDescSeg43 { get; set; }


        public string PubDescSeg44 { get; set; }


        public string PubDescSeg45 { get; set; }


        public string PubDescSeg46 { get; set; }


        public string PubDescSeg47 { get; set; }


        public string PubDescSeg48 { get; set; }


        public string PubDescSeg49 { get; set; }


        public string PubDescSeg50 { get; set; }

        public Base.FlexField.DescFlexField.DescFlexSegmentsData ToData()
        {
            Base.FlexField.DescFlexField.DescFlexSegmentsData data = new Base.FlexField.DescFlexField.DescFlexSegmentsData();
            Type thisType = this.GetType();
            Type dataType = data.GetType();

            for (int i = 1; i <= 30; i++)
            {
                PropertyInfo privateProp = thisType.GetProperty($"PrivateDescSeg{i}");
                PropertyInfo dataPrivateProp = dataType.GetProperty($"PrivateDescSeg{i}");
                if (privateProp != null && dataPrivateProp != null)
                {
                    dataPrivateProp.SetValue(data, privateProp.GetValue(this));
                }
            }

            for (int i = 1; i <= 50; i++)
            {
                PropertyInfo pubProp = thisType.GetProperty($"PubDescSeg{i}");
                PropertyInfo dataPubProp = dataType.GetProperty($"PubDescSeg{i}");
                if (pubProp != null && dataPubProp != null)
                {
                    dataPubProp.SetValue(data, pubProp.GetValue(this));
                }
            }

            return data;
        }
        public Base.FlexField.DescFlexField.DescFlexSegments ToBase()
        {
            Base.FlexField.DescFlexField.DescFlexSegments data = new Base.FlexField.DescFlexField.DescFlexSegments();
            Type thisType = this.GetType();
            Type dataType = data.GetType();

            for (int i = 1; i <= 30; i++)
            {
                PropertyInfo privateProp = thisType.GetProperty($"PrivateDescSeg{i}");
                PropertyInfo dataPrivateProp = dataType.GetProperty($"PrivateDescSeg{i}");
                if (privateProp != null && dataPrivateProp != null)
                {
                    dataPrivateProp.SetValue(data, privateProp.GetValue(this));
                }
            }

            for (int i = 1; i <= 50; i++)
            {
                PropertyInfo pubProp = thisType.GetProperty($"PubDescSeg{i}");
                PropertyInfo dataPubProp = dataType.GetProperty($"PubDescSeg{i}");
                if (pubProp != null && dataPubProp != null)
                {
                    dataPubProp.SetValue(data, pubProp.GetValue(this));
                }
            }

            return data;
        }
    }
}
